Awesome Crystal
    
      
      
    
    
      A curated list of awesome Crystal code and resources. Inspired by
      awesome and
      awesome-awesomeness. The goal is to have projects mostly stable and useful for the
      community.
    
    
      Search Crystal Shards or follow
      announcements Crystal [ANN] for
      more.
    
    
      Contributions are welcome. Please take a quick look at the
      contribution guidelines
      first.
    
    
    Algorithms and Data structures
    
      - 
        bisect -
        Inserting values into a sorted array
      
 
      - 
        blurhash.cr -
        BlurHash
        implementation
      
 
      - 
        crie - Compile-time Trie
      
 
      - 
        CrOTP - HOTP and TOTP
        implementation for two factor authentication
      
 
      - 
        crystal-linked-list
        - Implementation of Linked List
      
 
      - 
        crystaledge - A
        pure Vector Math library
      
 
      - 
        crystalg - A Generic
        Algorithm Library
      
 
      - 
        crystalline -
        A collection of containers and algorithms
      
 
      - 
        edits.cr - Collection
        of edit distance algorithms
      
 
      - 
        fzy - A Crystal port of
        awesome Fzy project fuzzy finder algorithm
      
 
      - 
        graphlb -
        Collection of graph datastructure and algorithms
      
 
      - 
        haversine - An
        Implementation of the Haversine formula
      
 
      - 
        kd_tree - An
        implementation of “K-Dimensional Tree” and “N-Nearest Neighbors”
      
 
      - 
        ksuid.cr - K-Sortable
        Globally Unique IDs
      
 
      - 
        markov - Build
        Markov Chains and run Markov Processes
      
 
      - 
        multiset.cr -
        Implementation of a multiset
      
 
      - 
        qr-code - QR
        Code generator
      
 
      - 
        radix - Radix Tree
        implementation
      
 
      - 
        s2_cells -
        S2 Geometry
        for spatial indexing
      
 
      - 
        splay_tree_map
        - Splay Tree implementation that conforms to the Hash ducktype
      
 
    
    Blockchain
    
      - 
        Axentro - A custom
        blockchain platform
      
 
      - 
        Cocol - A minimal
        blockchain testbed
      
 
      - 
        secp256k1.cr -
        Elliptic curve used in the public-private-key cryptography
      
 
    
    C bindings
    
    Caching
    
    CLI Builders
    
      - 
        admiral - A robust
        DSL for writing command line interfaces
      
 
      - 
        clicr - A simple declarative
        command line interface builder
      
 
      - 
        clim - Slim command
        line interface builder
      
 
      - 
        commander -
        Command-line interface builder
      
 
      - 
        Keimeno - A
        lightweight text user interface library in Crystal
      
 
      - 
        OptionParser
        - command-line options processing (Crystal stdlib)
      
 
      - 
        Phreak - A highly
        flexible Crystal CLI builder in the style of OptionParser
      
 
    
    CLI Utils
    
      - 
        climate - Tiny tool to
        make your CLI output 🌈 coloured
      
 
      - 
        coin - Command-line
        application that performs currency conversion via the
        Fixer API
      
 
      - 
        cride - A light CLI text
        editor/IDE
      
 
      - 
        lff - Simple and
        straightforward large files finder utility in command line
      
 
      - 
        meet - Start a jitsi
        meeting quickly from the comfort of your command line
      
 
      - 
        oq - A performant, and
        portable jq wrapper to facilitate the consumption and output of formats
        other than JSON; using
        jq filters to transform the
        data
      
 
      - 
        progress_bar.cr -
        A simple and customizable progress bar
      
 
      - 
        tablo - A flexible terminal
        table generator
      
 
      - 
        tallboy - Generate ASCII
        character tables with support for spanning cells over multiple columns
      
 
    
    Code Analysis and Metrics
    
      - 
        ameba - A static
        code analysis tool
      
 
      - 
        linguist.cr -
        Using multiple ways to find programming language used in files, based on
        Github’s Linguist
      
 
    
    Compression
    
      - 
        Crystar - Readers and
        writers of Tar archive format
      
 
      - 
        Gzip -
        readers and writers of gzip format (Crystal stdlib)
      
 
      - 
        polylines.cr —
        compression of series of coordinates
      
 
      - 
        snappy - Snappy
        compression format reader/writer for Crystal
      
 
      - 
        Zip -
        readers and writers of zip format (Crystal stdlib)
      
 
      - 
        Zlib -
        readers and writers of zlib format (Crystal stdlib)
      
 
      - 
        zstd.cr -
        Bindings for
        Zstandard compression
        library
      
 
    
    Configuration
    
      - 
        cr-dotenv - Loads
        .env file
      
 
      - 
        Envy - Load
        environment variables from YAML
      
 
      - 
        envyable - A
        simple YAML to ENV config loader
      
 
      - 
        habitat - Type
        safe configuration for your classes and modules
      
 
      - 
        totem - Load and parse a
        configuration in JSON, YAML, dotenv formats
      
 
    
    Converters
    
      - 
        base62.cr - Base62
        encoder/decoder, well suited for url-shortening
      
 
      - 
        crunits - Tool
        for converting units of measure (miles to kilometers, celsius to
        fahrenheit etc)
      
 
      - 
        money - Handling
        money and currency conversion with ease (almost complete port of
        RubyMoney)
      
 
      - 
        sass.cr -
        Compile SASS/SCSS to CSS (libsass
        binding)
      
 
      - 
        wkhtmltopdf-crystal
        - Bindings / wrapper for libwkhtmltox (HTML to PDF / image converter)
      
 
    
    Cryptography
    
      - 
        cmac - Crystal
        implementation of Cipher-based Message Authentication Code (CMAC)
      
 
      - 
        sodium.cr -
        Crystal wrapper for the libsodium crypto API
      
 
    
    
    
      - 
        BinData - Binary
        data parser helper with an
        ASN.1
        parser
      
 
      - 
        config.cr -
        Easy to use configuration format parser
      
 
      - 
        crinder - Class based
        json renderer
      
 
      - 
        Crystalizer -
        (De)serialize any Crystal object; supporting JSON, YAML, and Byte
        formats out of the box
      
 
      - 
        CSV - parsing and
        generating for comma-separated values (Crystal stdlib)
      
 
      - 
        front_matter.cr
        - Separates a files front matter from its content
      
 
      - 
        geoip2.cr - GeoIP2
        reader
      
 
      - 
        HAR - HAR (HTTP
        Archive) parser
      
 
      - 
        INI - INI file
        parser (Crystal stdlib)
      
 
      - 
        JSON - parsing and
        generating JSON documents (Crystal stdlib)
      
 
      - 
        JSON::OnSteroids
        - handle and mutate JSON document easily
      
 
      - 
        maxminddb.cr -
        MaxMindDB reader
      
 
      - 
        toml.cr -
        TOML parser
      
 
      - 
        XML - parsing and
        generating XML documents (Crystal stdlib)
      
 
      - 
        YAML - parsing and
        generating YAML documents (Crystal stdlib)
      
 
    
    Data Generators
    
      - 
        faker - A library for
        generating fake data
      
 
      - 
        hashids.cr - A
        library to generate YouTube-like ids from one or many numbers
      
 
      - 
        prime - A prime
        number generator
      
 
    
    Database Drivers/Clients
    
    
    
      - 
        migrate - A
        simpler database migration tool with transactions
      
 
      - 
        queryit - A setupless
        terminal based SQL query runner
      
 
    
    Debugging
    
      - 
        backtracer.cr -
        Shard aiming to assist with parsing backtraces into a structured form
      
 
      - 
        debug.cr -
        
debug!(…) macro for pp-style debugging
       
    
    Dependency Injection
    
    Email
    
    Environment Management
    
    Examples and funny stuff
    
    Framework Components
    
      - 
        Athena Event Dispatcher
        - A Mediator and Observer pattern event library
      
 
      - 
        Athena Negotiation
        - Framework agnostic content negotiation library
      
 
      - 
        device_detector
        - Shard for detect device by user agent string
      
 
      - 
        Exception Page
        - An exceptional exception page for Crystal web libraries and frameworks
      
 
      - 
        graphql -
        Type-safe GraphQL server implementation
      
 
      - 
        graphql-crystal
        - GraphQL implementation
      
 
      - 
        kemal-session -
        Session handler for Kemal
      
 
      - 
        mochi - Authentication
        shard inspired by Devise supporting: Authenticable, Confirmable,
        Invitable & more
      
 
      - 
        motion.cr - Object
        oriented frontend library for Amber
      
 
      - 
        multi-auth -
        Standardized multi-provider OAuth2 authentication (inspired by omniauth)
      
 
      - 
        praetorian -
        Minimalist authorization library inspired by Pundit
      
 
      - 
        Shield -
        Comprehensive security for Lucky framework
      
 
      - 
        shrine.cr - File
        Attachment toolkit for Crystal applications. Heavily inspired by Shrine
        for Ruby
      
 
      - 
        tourmaline -
        Telegram bot framework with an API loosely based on
        telegraf.js
      
 
    
    Game Development
    
    GUI Development
    
    HTML Builders
    
      - 
        form_builder.cr
        - Dead simple HTML form builder for Crystal with built-in support for
        many popular UI libraries such as Bootstrap
      
 
    
    HTML/XML Parsing
    
    HTTP
    
    Image processing
    
    Implementations/Compilers
    
      - 
        charly - Charly Programming
        Language
      
 
      - 
        cltk - A crystal port of
        the Ruby Language Toolkit
      
 
      - 
        crisp - Lisp dialect
        implemented with Crystal
      
 
      - 
        LinCAS-lang - A programming
        language for scientific computation
      
 
      - 
        mint-lang - A refreshing
        programming language for the front-end web
      
 
      - 
        myst-lang - A practical,
        dynamic language designed to be written and understood as easily and
        efficiently as possible
      
 
      - 
        runic-lang - In-design toy
        language
      
 
    
    Internationalization
    
      - 
        crystal-i18n - An
        internationalization library inspired by Ruby-I18n
      
 
      - 
        i18n.cr -
        Internationalization shard
      
 
    
    Logging and monitoring
    
    Machine Learning
    
      - 
        ai4cr - Artificial
        Intelligence (based on https://github.com/SergioFierens/ai4r)
      
 
      - 
        Cadmium - NLP library
        based heavily on
        natural
      
 
      - 
        crystal-fann -
        FANN (Fast Artifical Neural Network) binding
      
 
      - 
        mxnet.cr -
        Bindings for MXNet
      
 
      - 
        shainet - SHAInet
        (Neural Network in pure crystal)
      
 
    
    Markdown/Text Processors
    
      - 
        markd - Yet another
        markdown parser built for speed, Compliant to CommonMark specification
      
 
    
    Misc
    
      - 
        aasm.cr - Easy to use
        finite state machine for Crystal classes
      
 
      - 
        any_hash.cr -
        Recursive Hash with better JSON::Any included
      
 
      - 
        anyolite - Full mruby
        interpreter with simple bindings, allowing for easy scripting support in
        projects
      
 
      - 
        burocracia.cr -
        burocracia.cr the dependecyless shard to validate, generate and format
        Brazilian burocracias such as CPF, CNPJ and CEP
      
 
      - 
        callbacks -
        Expressive callbacks module
      
 
      - 
        circuit_breaker -
        Implementation of the circuit breaker pattern
      
 
      - 
        CrSignals -
        Signals/slots notification library
      
 
      - 
        crystal-binary_parser
        - Binary parser
      
 
      - 
        crystal-web-framework-stars
        - Web frameworks for Crystal, most starred on Github
      
 
      - 
        crz - Functional
        programming library
      
 
      - 
        emoji.cr - Emoji
        library
      
 
      - 
        gphoto2-web.cr -
        Web API for libgphoto2
      
 
      - 
        immutable -
        Implementation of thread-safe, persistent, immutable collections
      
 
      - 
        iterm2 - Display
        images within the terminal using the ITerm2 Inline Images Protocol
      
 
      - 
        monads - Monad
        implementation
      
 
      - 
        pinger - Ping IP
        addresses and DNS entries without requiring sudo
      
 
      - 
        port_midi -
        Crystal C bindings for the PortMIDI cross-platform MIDI I/O library
      
 
      - 
        retriable.cr - Simple
        DSL to retry failed code blocks
      
 
      - 
        serf-handler.cr
        - Framework for building Serf handlers, with a suite of useful builtin
        capabilities
      
 
      - 
        simple_retry
        - Simple tool for retrying failed code blocks
      
 
      - 
        sslscan.cr -
        Crystal shard wrapping the rbsec/sslscan utility
      
 
      - 
        version_tools
        - Version-dependent behaviour, specified at compile-time
      
 
      - 
        wafalyzer - Web
        Application Firewall (WAF) Detector - shard + cli
      
 
      - 
        zaru_crystal -
        Filename sanitization
      
 
    
    Network Protocols
    
    Networking
    
    ORM/ODM Extensions
    
      - 
        avram - A database
        wrapper for reading, writing, and migrating Postgres databases
      
 
      - 
        clear - ORM specialized
        to PostgreSQL only but with advanced features
      
 
      - 
        crecto - Database
        wrapper, based on Ecto
      
 
      - 
        granite - ORM
        for Postgres, Mysql, Sqlite
      
 
      - 
        jennifer.cr -
        Active Record pattern implementation with flexible query chainable
        builder and migration system
      
 
      - 
        onyx-sql -
        DB-agnostic SQL ORM with beautiful DSL and type-safe Query builder
      
 
      - 
        rethinkdb-orm
        - ORM for RethinkDB / RebirthDB
      
 
    
    Package Management
    
      - 
        shards - Dependency
        manager for the Crystal
      
 
    
    Processes and Threads
    
      - 
        await_async - Add
        keywords await & async in Crystal Lang
      
 
      - 
        neph - A modern command
        line job processor that can execute jobs concurrently
      
 
      - 
        promise - A
        Promise implementation with type inference
      
 
      - 
        werk - Dead simple task
        runner with concurrent support, ideal for local CI
      
 
    
    Project Generators
    
      - 
        crystal_lib -
        Automatic binding generator for native libraries
      
 
      - 
        fez - A Kemal application
        generator
      
 
      - 
        libgen - Automatic
        bindings generator configured using JSON/YAML files
      
 
    
    Queues and Messaging
    
      - 
        mosquito - Redis
        backed periodic and ad hoc job processing
      
 
      - 
        NATS.io - NATS client
      
 
      - 
        sidekiq.cr - Simple,
        efficient job processing
      
 
    
    Routing
    
      - 
        orion - A minimal,
        rails-esque routing library
      
 
      - 
        router.cr - Minimum
        but powerful http router for HTTP::Server
      
 
    
    Scheduling
    
      - 
        crystime -
        Advanced time, calendar, schedule, and remind library
      
 
      - 
        schedule.cr -
        Run periodic tasks
      
 
      - 
        tasker - A high
        precision scheduler including timezone aware cron jobs
      
 
    
    Science and Data analysis
    
      - 
        alea - Repeatable sampling,
        CDF and other utilities to work with probability distributions
      
 
      - 
        ishi - Graph plotting
        package with a small API and sensible defaults powered by gnuplot
      
 
      - 
        linalg - Linear algebra
        library inspired by MATLAB and SciPy.linalg
      
 
      - 
        num.cr - Numerical
        computing library supporting N-Dimensional data
      
 
      - 
        predict.cr - Satellite
        prediction library using the sgp4 model
      
 
      - 
        quartz -
        Modeling and simulation framework
      
 
    
    Search
    
      - 
        hermes - Data Mapper
        pattern implementation for ElastiSearch
      
 
      - 
        soegen - Elasticsearch
        client for Crystal similar to the stretcher gem for ruby
      
 
    
    Serverless Computing
    
      - 
        crystal_openfaas
        - Template to enable crystal as first class citizens in OpenFaaS
      
 
      - 
        FaaStRuby - Serverless Software
        Development Platform for Ruby and Crystal
      
 
      - 
        secrets-env
        - Extends ENV module to read values injected by docker / kubernetes
        secrets and other orchestration tools
      
 
    
    System
    
      - 
        baked_file_system
        - Virtual file system implementation
      
 
      - 
        hardware -
        Get CPU, Memory and Network informations of the running OS and its
        processes
      
 
    
    Task management
    
      - 
        cake - Production-ready
        Make-like utility tool
      
 
      - 
        sam - Another one
        Rake-like task manager with namespacing and arguments system
      
 
    
    Template Engine
    
      - 
        crinja - An
        implementation of the
        Jinja2 template engine
      
 
      - 
        crustache -
        {{Mustache}} for Crystal
      
 
      - 
        ECR (Embedded Crystal)
        - compile time template language which uses plain crystal expressions
        (Crystal stdlib)
      
 
      - 
        Jbuilder -
        Generate JSON objects with a Builder-style DSL, inspired by jbuilder
      
 
      - 
        Kilt - Abstraction layer
        for template engines
      
 
      - 
        Slang - Lightweight,
        terse, templating language inspired by Ruby’s Slim
      
 
      - 
        teeplate - A library for
        rendering multiple template files
      
 
      - 
        Water - A library for
        writing HTML in plain Crystal
      
 
    
    Testing
    
      - 
        Athena Spec -
        Common/helpful
        Spec compliant
        testing utilities
      
 
      - 
        crotest - A tiny and
        simple test framework
      
 
      - 
        crytic - Mutation
        testing framework
      
 
      - 
        LuckyFlow -
        Automated browser tests similar to Capybara
      
 
      - 
        mass-spec - Web API
        testing library
      
 
      - 
        microtest - Small
        opinionated testing library focusing on power asserts
      
 
      - 
        minitest.cr -
        Library for unit tests and assertions
      
 
      - 
        mocks.cr - Mocking
        library for Crystal
      
 
      - 
        Spec - spec
        framework (Crystal stdlib)
      
 
      - 
        spectator -
        Feature rich spec framework that uses the modern expect syntax
      
 
      - 
        timecop.cr
        - Library for mocking with 
Time.now. Inspired by the
        timecop ruby gem
       
      - 
        vcr - A HTTP capture and
        replay implementation for crystal
      
 
      - 
        webdriver_pump
        - Page Object library. Inspired by Ruby’s
        WatirPump
      
 
      - 
        webmock.cr -
        Library for stubbing 
HTTP::Client requests
       
    
    Third-party APIs
    
    Validation
    
    Web Frameworks
    
      - 
        amber - Open
        source efficient and cohesive web application framework
      
 
      - 
        Athena - A web
        framework comprised of reusable, independent components
      
 
      - 
        grip - The
        microframework for writing powerful web applications
      
 
      - 
        kemal - Lightning Fast,
        Super Simple web framework. Inspired by Sinatra
      
 
      - 
        lucky - Catch bugs
        early, forget about most performance issues, and spend more time on code
        instead of debugging and writing tests
      
 
      - 
        runcobo - An api
        framework with simple, intuitive and consistent DSL, using jbuilder to
        render json
      
 
      - 
        Shivneri -
        Component based MVC web framework for crystal targeting good code
        structures, modularity & performance
      
 
      - 
        spider-gazelle
        - A Rails esque web framework with a focus on speed and extensibility
      
 
    
    
    
    Unofficial
    
    Resources
    
    
      Official Documentation Translations
    
    
    Services and Apps
    
      - 
        carc.in - A web service that runs your
        code and displays the result
      
 
      - 
        Crank - A
        Procfile-based application manager (like Foreman)
      
 
      - 
        cry - Ability to execute
        crystal code in a fashion similar to Ruby’s pry edit
      
 
      - 
        Crystal [ANN] - Announce new
        project, blog post, version update or any other Crystal work
      
 
      - 
        crystalshards.herokuapp.com, crystalshards.xyz - Web
        services that list all available Crystal shards
      
 
      - 
        Crystular - Regular expression
        tester
      
 
      - 
        DeBot - IRC bot written in
        Crystal
      
 
      - 
        icr - Interactive
        console for Crystal (like IRB for Ruby)
      
 
      - 
        Invidious - Invidious
        is an alternative front-end to YouTube
      
 
      - 
        mpngin - A URL
        shortener with simple stats
      
 
      - 
        quicktype - Generate models and
        serializers from JSON, JSON Schema, GraphQL, and TypeScript
      
 
      - 
        shards.info - Web service that lists
        all repositories on GitHub that have Crystal code in them. The sources
        are available on
        GitHub
      
 
    
    
    
    DevOps
    
      - 
        ansible-crystal
        - Ansible playbook for installing crystal
      
 
      - 
        DPPM - An easy, universal
        way to install and manage applications as packages (mostly Linux)
      
 
    
    Editor Plugins
    
      - 
        Acme:
        
      
 
      - 
        Atom
        
      
 
      - 
        Emacs
        
      
 
      - 
        Geany
        
      
 
      - 
        Spacemacs
        
      
 
      - 
        Sublime
        
      
 
      - 
        TextMate
        
          - 
            Crystal.tmbundle
            - Crystal syntax highlighting, compile, format command, snippets
          
 
        
       
      - 
        Vim
        
          - 
            vim-crystal
            - Vim filetype support for Crystal
          
 
          - 
            vim-slang - Vim
            filetype support for Slang Templating Engine
          
 
        
       
      - 
        Visual Studio Code
        
      
 
    
    
      LSP Language Server Protocol Implementations
    
    
      - 
        crystalline -
        Crystalline is an implementation of the Language Server Protocol written
        in and for the Crystal Language
      
 
      - 
        scry - Code
        analysis server for Crystal implementing the
        Language Server Protocol
      
 
    
    Shell plugins
    
      - 
        crun - Crystal Run : shebang
        wrapper for Crystal
      
 
      - 
        crystal-zsh -
        .oh-my-zsh plugin